[//]: # (---)

[//]: # (slug: dify #路径，不能重复)

[//]: # (title: dify # 标题)

[//]: # (authors: [] # 作者，在authors.yml配置)

[//]: # (tags: [facebook, hello, docusaurus] # 标签，在tags.yml配置)

[//]: # (toc_min_heading_level: 2 # 最小展示标题)

[//]: # (toc_max_heading_level: 5 # 最大展示标题)

[//]: # (---)

[//]: # ()
[//]: # (# Dify课件)

[//]: # ()
[//]: # (## 第一章 Dify的部署)

[//]: # ()
[//]: # (Dify是一个可以低代码或者0代码就可以快速生成企业级大模型应用的平台。它的具体功能如下：)

[//]: # ()
[//]: # (- 基于Agent构建智能体)

[//]: # (- 基于RAG构建私有知识库)

[//]: # (- 基于Workflow构建智能应用)

[//]: # ()
[//]: # (Dify 是当今最优雅、门槛最低、最受欢迎、效果最好的大模型开发平台之一。)

[//]: # ()
[//]: # (### 1、Dify平台的介绍)

[//]: # ()
[//]: # (**什么是Dify**)

[//]: # ()
[//]: # (​	Dify  是⼀款领先的开源⼤语⾔模型&#40;LLM&#41;应⽤开发平台。它巧妙地融合了后端即服务 &#40;Backend as a Service - BaaS&#41; 和 LLMOps &#40;大型语言模型运维&#41; 的核心理念。Dify 的设计目标是使各类开发者，无论是经验丰富的程序员还是初涉AI领域的团队，都能够快速、高效地搭建并运营生产级别的生成式 AI 应⽤。更重要的是，Dify 致力于降低技术门槛，使得即使是⾮技术⼈员（如产品经理、运营人员）也能够积极参与到 AI 应⽤的功能定义、数据准备和后期运营过程中，从而真正实现 AI 在组织内的普及和价值最大化。)

[//]: # ()
[//]: # (**什么是LLMOps**)

[//]: # ()
[//]: # (LLMOps（Large Language Model Operations）是借鉴了软件工程中 DevOps 的理念，并针对大型语言模型特有挑战而形成的一整套最佳实践、工具和流程。它覆盖了⼤型语⾔模型从原型设计、开发测试、部署上线到持续监控、维护迭代和优化升级的完整生命周期。LLMOps 的核⼼⽬标是确保企业或开发者能够安全、⾼效、可靠且可扩展地使⽤这些功能强⼤的 AI 模型来构建和运⾏能够解决实际问题的应⽤程序。这包括了数据管理、模型版本控制、实验追踪、自动化部署、性能监控、成本控制以及保障模型的公平性、透明度和合规性等方面。)

[//]: # ()
[//]: # (**Dify 能做什么**)

[//]: # ()
[//]: # (Dify 作为一个综合性的 LLM 应用开发平台，内置了构建现代生成式 AI 应⽤所需的几乎所有关键技术栈。这包括：)

[//]: # ()
[//]: # (*   **广泛的模型支持**：全面兼容并支持数百种模型，涵盖了如 OpenAI 的 GPT 系列、Anthropic 的 Claude 系列等领先的商业闭源模型，以及如 Llama、Mistral、ChatGLM 等流行的开源模型。同时，也支持通过标准 API 接口接入企业自托管的模型。)

[//]: # (*   **直观的 Prompt 编排界⾯**：提供"所见即所得"的可视化界面，让用户可以轻松创建、调试和迭代 Prompt，支持变量、上下文管理、多轮对话设计等高级功能。)

[//]: # (*   **⾼质量的 RAG 引擎**：内置了强大的检索增强生成 &#40;Retrieval-Augmented Generation&#41; 引擎，支持多种数据源（如文档、网页、API）的接入、文本自动分割、向量化存储和高效检索，使 LLM 能够基于私有知识库生成更精准、更相关的回答。)

[//]: # (*   **稳健的 Agent 框架**：支持构建能够自主规划、调用工具并执行复杂任务的 AI 智能体 &#40;Agent&#41;。用户可以利用预置的工具（如搜索引擎、代码解释器、API 调用工具）或自定义开发新工具。)

[//]: # (*   **灵活的流程编排 &#40;Workflow&#41;**：允许用户通过拖拽不同功能节点（如 LLM 调用、知识库检索、条件分支、循环、代码执行等）来构建复杂的自动化工作流，实现业务逻辑的灵活定制。)

[//]: # ()
[//]: # (Dify 同时提供了⼀套易⽤的图形用户界⾯ &#40;GUI&#41; 和完善的 API 接口。这为开发者节省了大量重复"造轮子"（例如，与不同模型 API 对接、管理对话状态、实现 RAG 流程等）的时间，使其可以将更多精力专注在业务逻辑的创新和满足特定用户需求上。)

[//]: # ()
[//]: # (我们可以把 LangChain、LlamaIndex 这类的开发库想象为装满了各种基础工具（如锤⼦、钉⼦、螺丝刀）的⼯具箱，它们为开发者提供了构建 LLM 应用的底层能力。与之相⽐，Dify 提供了更接近实际业务需求、更集成化的全套解决⽅案。Dify 好⽐是⼀套精心设计并预制好的脚⼿架系统，它不仅提供了工具，还搭建好了基础框架，并经过了严谨的⼯程设计和软件测试，让开发者可以直接在其上高效地构建应用。)

[//]: # ()
[//]: # (Dify 的应用场景广泛：)

[//]: # ()
[//]: # (> 将 LLM 快速集成⾄已有业务：企业可以通过引⼊ LLM 来增强现有应⽤的智能化能⼒。通过 Dify 提供的 RESTful API，可以轻松将 AI 功能嵌入到各种业务系统中，实现 Prompt 逻辑与业务代码的有效解耦。在 Dify 的管理界⾯中，可以方便地跟踪应用数据、监控 API 调用成本和⽤量，并根据运营数据持续迭代和改进应⽤效果。)

[//]: # (>)

[//]: # (> 作为企业级 LLM 基础设施与能力中台：许多企业，特别是对数据安全和合规性有较高要求的金融机构和⼤型互联⽹公司，正在将 Dify 私有化部署为企业内部的 LLM 核心服务平台或"LLM 网关"。这样做有助于加速生成式 AI 技术在企业各个业务部门内的安全推广和应用落地，并实现对模型访问、数据使用和应用行为的统⼀、中⼼化的监管和治理。)

[//]: # (>)

[//]: # (> 探索与实践 LLM 的前沿能⼒边界：对于希望深入研究和实践大模型最新技术的开发者和研究人员，Dify 也是一个理想的实验平台。通过 Dify，可以轻松、直观地实践和探索 Prompt ⼯程的最佳实践、RAG 技术的不同配置与优化、AI Agent 的设计与实现，以及复杂工作流的编排与调试，从而更好地理解和发挥 LLM 的潜力。)

[//]: # ()
[//]: # (**Dify的优势**)

[//]: # ()
[//]: # (在使⽤像 Dify 这样的 LLMOps 平台之前，传统的基于 LLM 开发应⽤的过程可能会显得⾮常繁琐、耗时且充满挑战。开发者通常需要独力或借助分散的工具来处理从数据准备到应用部署和维护的各个阶段任务，这可能导致开发效率低下、项⽬难以扩展、维护成本高昂以及潜在的安全性和合规性风险。)

[//]: # ()
[//]: # (具体来说，传统方式可能面临以下痛点：)

[//]: # ()
[//]: # (1.  数据准备与处理：需要⼿动或编写大量脚本来收集、清洗、转换和标注用于训练或 RAG 的数据，过程复杂且容易出错，尤其对于非结构化数据更是如此。)

[//]: # (2.  Prompt Engineering 与调试：通常在代码中直接编写和修改 Prompt，缺乏实时反馈、版本控制和可视化调试环境，优化效率低下。)

[//]: # (3.  嵌⼊处理和上下⽂管理：对于需要处理长文本或多轮对话的应用，开发者需要⼿动实现文本的嵌⼊（Embedding）生成、向量化存储与检索，以及复杂的对话历史和上下文管理机制，这不仅需要不少编程⼯作，还需要熟悉模型嵌⼊原理和向量数据库等相关技术。)

[//]: # (4.  应⽤监控、日志与维护：需要自行搭建或集成监控系统来收集和分析应用的性能数据、用户反馈和错误日志，可能⽆法实时发现和快速处理线上问题。)

[//]: # (5.  模型微调与迭代：如果需要对模型进行微调，开发者需要⾃⾏处理微调数据的准备、格式转换、训练脚本编写和训练过程管理，这通常效率低下且需要深厚的专业知识。)

[//]: # (6.  系统搭建和协同运营：为了方便管理和运营，往往需要技术⼈员额外花费时间与成本去开发专门的管理后台，这增加了开发和维护的负担。同时，传统开发方式也缺乏对多⼈协同工作和⾮技术⼈员参与的友好⽀持。)

[//]: # ()
[//]: # (引⼊ Dify 这样的 LLMOps 平台后，基于 LLM 开发应⽤的过程将变得更加标准化、自动化、安全且⾼效。使⽤ Dify 进⾏应⽤开发的优势主要体现在以下⼏个⽅⾯：)

[//]: # ()
[//]: # (> 数据准备与管理：Dify 平台提供了便捷的数据集管理功能和文档处理工具（如自动格式化、文本分割、元数据提取等），极大地简化了知识库构建过程中数据收集、清洗和预处理的⼯作，显著减少甚至消除了针对这部分工作的编码需求。)

[//]: # (>)

[//]: # (> 可视化的 Prompt Engineering：提供"所见即所得"的 Prompt 编辑、调试和版本管理界面。开发者可以方便地测试不同 Prompt 的效果，根据模型输出和用户反馈数据进⾏实时优化和调整，加速 Prompt 的迭代周期。)

[//]: # (>)

[//]: # (> 自动化的嵌⼊和上下⽂管理：Dify 能够⾃动处理知识库文档的嵌⼊、向量化存储和高效检索，并内置了成熟的对话上下文管理机制，有效提⾼了处理长文本和多轮对话应用的开发效率和最终效果的扩展性，开发者⽆需编写⼤量底层代码。)

[//]: # (>)

[//]: # (> 全面的应⽤监控与日志分析：内置了对应用运行状态、用户交互、Token 消耗、调用耗时等关键指标的实时监控和日志记录功能。这使得开发团队能够快速发现和诊断线上问题，确保应⽤程序的稳定运⾏，并为后续优化提供数据支持。)

[//]: # (>)

[//]: # (> 便捷的微调数据准备与导出：Dify 支持在应用运营过程中收集高质量的线上用户反馈数据和人工标注数据，并提供这些数据集的批量导出功能，为模型的持续改进和微调提供了便利。)

[//]: # (>)

[//]: # (> 易用的系统和协同运营界面：Dify 提供了用户友好的管理后台和操作界面，使得⾮技术⼈员（如产品经理、运营专家）也能够轻松参与到应用配置、知识库更新、效果评估等运营环节中。平台天然⽀持多⼈协同工作，明确的角色和权限管理有助于降低整体的开发和维护成本。与传统开发⽅式相⽐，Dify 提供了更加透明化和易于监控的应⽤管理体验，让整个团队成员都能更好地了解应⽤的运⾏情况和用户反馈。)

[//]: # ()
[//]: # (**使用Dify和不使用Dify的开发差别**)

[//]: # ()
[//]: # (| 步骤               | **未使用 LLMOps 平台**                      | 使用 Dify LLMOps 平台                          | 时间差异 |)

[//]: # (| ------------------ | ------------------------------------------- | ---------------------------------------------- | -------- |)

[//]: # (| 开发应用前&后端    | 集成和封装LLM能力，花费较多时间开发前端应用 | 直接使用Dify的后端服务，可基于WebApp脚手架开发 | -80%     |)

[//]: # (| Prompt Engineering | 仅能通过调用 API 或 Playground 进行         | 结合用户输入数据，所见即所得，完成调试         | -25%     |)

[//]: # (| 数据准备与嵌入     | 编写代码实现长文本数据处理、嵌入            | 在平台上传文本或绑定数据源即可                 | -80%     |)

[//]: # (| 应用日志与分析     | 编写代码记录日志，访问数据库查看            | 平台提供实时日志与分析                         | -70%     |)

[//]: # (| 数据分析与调优     | 技术人员进行数据管理和创建微调队列          | 非技术人员可协同，可视化模型调整               | -60%     |)

[//]: # (| AI 插件开发与集成  | 编写代码创建、集成 AI 插件                  | 平台提供可视化工具创建、集成插件能力           | -50%     |)

[//]: # ()
[//]: # (**Dify的平台**)

[//]: # ()
[//]: # (在线的平台：https://cloud.dify.ai/apps)

[//]: # ()
[//]: # (开源离线部署的平台：https://github.com/langgenius/dify)

[//]: # ()
[//]: # (### 2、Dify平台私有化部署)

[//]: # ()
[//]: # (#### 2.1 Dify私有化部署方案设计)

[//]: # ()
[//]: # (![image-20250605095440541]&#40;./Dify%E8%AF%BE%E4%BB%B6.assets/image-20250605095440541.png&#41;)

[//]: # ()
[//]: # (在Dify的私有化部署中，我们可能会结合使用不同的模型服务平台来满足多样的需求，例如Ollama和Xinference。在本演示方案中，我们将这两个平台分别部署在不同的服务器上，以便展示Dify管理多个外部模型服务的能力，并探讨其优势。)

[//]: # ()
[//]: # (-   **Ollama**：专注于简化大语言模型（LLM）的本地部署和管理。它为运行各种主流开源LLM提供了便捷的方式。虽然Ollama对嵌入模型（Embedding Models）和重排序模型（ReRank Models）的直接支持相对有限，但其核心优势在于LLM的易用性和快速上手。)

[//]: # (-   **Xinference**：则是一个功能更全面的模型服务框架，它不仅支持部署和管理大语言模型，还对嵌入模型和重排序模型提供了广泛且灵活的支持，允许用户从更丰富的模型库中进行选择，以优化RAG等流程的效果。)

[//]: # ()
[//]: # (**为何考虑多服务器部署？**)

[//]: # ()
[//]: # (虽然将Ollama、Xinference与Dify部署在同一台服务器上是可行的，但采用分离部署（即将Ollama和Xinference分别部署在独立的服务器上）通常能带来以下好处：)

[//]: # ()
[//]: # (1.  **分散计算压力，优化资源利用**：大语言模型及相关AI模型的运算（尤其是推理过程）对GPU等计算资源消耗较大。通过将不同的模型服务部署在不同的服务器上，可以将计算负载分摊开，避免单一服务器资源瓶颈，确保Dify平台及各个模型服务的稳定高效运行。当特定模型被调用时，其计算压力将主要集中在承载该模型的服务器上。)

[//]: # (2.  **提高可扩展性和灵活性**：随着Dify平台上纳管的应用增多或特定模型调用频率增加，可能需要独立扩展某个模型服务（如增加更多GPU资源给Xinference服务器）。多服务器架构为此类精细化的资源扩展和管理提供了便利。)

[//]: # (3.  **演示Dify的分布式模型管理能力**：此架构也清晰地演示了Dify平台如何有效地集成和管理部署在不同位置的多个外部模型服务实例，这对于构建复杂的、分布式的AI应用基础设施具有实际参考意义。)

[//]: # ()
[//]: # (通过这种方式，Dify可以灵活地调用不同服务器上的Ollama和Xinference所提供的模型服务，以满足不同AI应用场景下的需求。)

[//]: # ()
[//]: # (#### 2.2 租赁云平台)

[//]: # ()
[//]: # (​	这里我们选用幕僚智算平台租赁服务器。这是一款面向开发者和企业的云计算平台，主要提供高性价比的GPU算力资源，支持AIGC、深度学习、云游戏、渲染测绘、元宇宙、HPC等应用。)

[//]: # ()
[//]: # (平台地址：https://www.muliao.com/)

[//]: # ()
[//]: # (1、选择服务器)

[//]: # ()
[//]: # (![image-20250605100750865]&#40;./Dify课件.assets/image-20250605100750865.png&#41;)

[//]: # ()
[//]: # (2、选择环境)

[//]: # ()
[//]: # (![image-20250605101424518]&#40;./Dify课件.assets/image-20250605101424518.png&#41;)

[//]: # ()
[//]: # (3、创建服务器)

[//]: # ()
[//]: # (![image-20250605101838772]&#40;./Dify课件.assets/image-20250605101838772.png&#41;)

[//]: # ()
[//]: # (用同样的方式再创建一台服务器，命名为Xinference)

[//]: # ()
[//]: # (![image-20250605102128280]&#40;./Dify课件.assets/image-20250605102128280.png&#41;)

[//]: # ()
[//]: # (4、进入服务器)

[//]: # ()
[//]: # (![image-20250605102309971]&#40;./Dify课件.assets/image-20250605102309971.png&#41;)

[//]: # ()
[//]: # (![image-20250605102337100]&#40;./Dify课件.assets/image-20250605102337100.png&#41;)

[//]: # ()
[//]: # (![image-20250605102347328]&#40;./Dify课件.assets/image-20250605102347328.png&#41;)

[//]: # ()
[//]: # (5、开启学术加速)

[//]: # ()
[//]: # (​	为下载一些处于外网的资源（比如Github、huggingface等），需要开启学术加速)

[//]: # ()
[//]: # (![image-20250605102747079]&#40;./Dify课件.assets/image-20250605102747079.png&#41;)

[//]: # ()
[//]: # (直接将这两行复制到控制台即可)

[//]: # ()
[//]: # (#### 2.3 部署Docker)

[//]: # ()
[//]: # (​	相较于传统的通过虚拟机技术实现的虚拟化⽅案来说，Docker是⼀种更加轻量级的虚拟化解 决⽅案。具有易安装、易维护、启动速度快能够更好的实现开发项⽬的持续集成与持续部 署，受到⼴⼤技术爱好者的⻘睐。)

[//]: # ()
[//]: # (> 部署dify平台，需要基于docker环境。在muliao新建的云平台上默认是没有docker的。这里先安装一下。)

[//]: # ()
[//]: # (​	注意：后续的操作中，只是把Dify安装在了Docker中，而Ollama和Xinference并没有安装在Docker中。因为调用模型需要消耗大量GPU资源，而Docker中默认使用CPU，不能直接使用GPU，所以这里为简化操作，就把Ollama和Xinference不安装在Docker中。所以只在Dify所在的服务器中安装Dify即可。)

[//]: # ()
[//]: # (​	按照下面的指令一步一步进行操作)

[//]: # ()
[//]: # (```bash)

[//]: # (sudo apt-get update)

[//]: # (#这个步骤可以不做)

[//]: # (sudo apt-get install ca-certificates curl  #安装了curl命令)

[//]: # (sudo install -m 0755 -d /etc/apt/keyrings)

[//]: # ()
[//]: # ()
[//]: # (#使用curl命令 从后续的网址中下载gpg资源文件，保存在keyrings文件夹中，名字为docker.asc)

[//]: # (#如果网络不好，这个文件用手动的方式下载（通过给定的网址），然后把文件放到指定目录下，改名叫docker.asc即可)

[//]: # (sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc)

[//]: # ()
[//]: # ()
[//]: # (sudo chmod a+r /etc/apt/keyrings/docker.asc)

[//]: # (#将Docker的APT仓库添加到Ubuntu系统的APT源列表中，)

[//]: # (#以便后续可以通过APT包管理器安装Docker相关的软件包)

[//]: # (# Add the repository to Apt sources:)

[//]: # (echo \)

[//]: # (  "deb [arch=$&#40;dpkg --print-architecture&#41; signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \)

[//]: # (  $&#40;. /etc/os-release && echo "$VERSION_CODENAME"&#41; stable" | \)

[//]: # (  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null)

[//]: # ()
[//]: # (#更新一下源)

[//]: # (sudo apt-get update)

[//]: # ()
[//]: # ( # 安装Docker 建议开启学术资源加载 （这里安装三个组件）)

[//]: # (sudo apt-get install docker-ce docker-ce-cli containerd.io)

[//]: # ()
[//]: # (# 启动Docker服务)

[//]: # (sudo systemctl start docker)

[//]: # ()
[//]: # (# 查看Docker服务状态)

[//]: # (sudo systemctl status docker)

[//]: # (```)

[//]: # ()
[//]: # (​	如图所示即为安装成功，且已经启动)

[//]: # ()
[//]: # (![image-20250605103341581]&#40;./Dify课件.assets/image-20250605103341581.png&#41;)

[//]: # ()
[//]: # (### 2.4 部署DIfy)

[//]: # ()
[//]: # (官网：https://github.com/langgenius/dify)

[//]: # ()
[//]: # (这里我们可以参考Github官网的几个步骤)

[//]: # ()
[//]: # (![image-20250605103608509]&#40;./Dify课件.assets/image-20250605103608509.png&#41;)

[//]: # ()
[//]: # (1、下载源码)

[//]: # ()
[//]: # (在data下创建一个dify目录)

[//]: # ()
[//]: # (![image-20250605103942093]&#40;./Dify课件.assets/image-20250605103942093.png&#41;)

[//]: # ()
[//]: # (然后再其Github主页进行复制)

[//]: # ()
[//]: # (![image-20250605104043163]&#40;./Dify课件.assets/image-20250605104043163.png&#41;)

[//]: # ()
[//]: # (执行git clone命令)

[//]: # ()
[//]: # (如图即为下载完成)

[//]: # ()
[//]: # (![image-20250605104224109]&#40;./Dify课件.assets/image-20250605104224109.png&#41;)

[//]: # ()
[//]: # (2、修改Dify端口号)

[//]: # ()
[//]: # (```bash)

[//]: # (cd dify  #进入dify目录)

[//]: # (cd docker  #进入docker子目录)

[//]: # (cp .env.example .env  #重命名)

[//]: # (vi .env  #进入.env文件)

[//]: # (## 把端口号修改8890)

[//]: # (```)

[//]: # ()
[//]: # (（修改位置在文档最下面，接近90%的地方）)

[//]: # ()
[//]: # (![image-20250605105931401]&#40;./Dify课件.assets/image-20250605105931401.png&#41;)

[//]: # ()
[//]: # (修改端口号的原因是此平台给服务器准备了一些预留端口，用于内网和外网的访问。这里选择了其中的一种，便于外网访问)

[//]: # ()
[//]: # (![image-20250605110139133]&#40;./Dify课件.assets/image-20250605110139133.png&#41;)

[//]: # ()
[//]: # (3、使用docker启动Dify)

[//]: # ()
[//]: # (```bash)

[//]: # (docker compose up -d)

[//]: # (```)

[//]: # ()
[//]: # (执行失败，因为未添加Docker的镜像源)

[//]: # ()
[//]: # (![image-20250605110352485]&#40;./Dify课件.assets/image-20250605110352485.png&#41;)

[//]: # ()
[//]: # (进行镜像源的配置)

[//]: # ()
[//]: # (```bash)

[//]: # (vi /etc/docker/daemon.json)

[//]: # (```)

[//]: # ()
[//]: # (添加下面的配置)

[//]: # ()
[//]: # (```bash)

[//]: # (#文件有缩进识别,格式要排列准确)

[//]: # ({)

[//]: # (  "registry-mirrors": [)

[//]: # (      "https://docker.registry.cyou",)

[//]: # (      "https://docker-cf.registry.cyou",)

[//]: # (      "https://dockercf.jsdelivr.fyi",)

[//]: # (      "https://docker.jsdelivr.fyi",)

[//]: # (      "https://dockertest.jsdelivr.fyi",)

[//]: # (      "https://mirror.aliyuncs.com",)

[//]: # (      "https://dockerproxy.com",)

[//]: # (      "https://mirror.baidubce.com",)

[//]: # (      "https://docker.m.daocloud.io",)

[//]: # (      "https://docker.nju.edu.cn",)

[//]: # (      "https://docker.mirrors.sjtug.sjtu.edu.cn",)

[//]: # (      "https://docker.mirrors.ustc.edu.cn",)

[//]: # (      "https://mirror.iscas.ac.cn",)

[//]: # (      "https://docker.rainbond.cc")

[//]: # (  ])

[//]: # (})

[//]: # ()
[//]: # (```)

[//]: # ()
[//]: # (如果这些镜像失效，可以替换为)

[//]: # ()
[//]: # (```bash)

[//]: # ("https://docker.unsee.tech",)

[//]: # ("https://dockerpull.org",)

[//]: # ("https://docker.1panel.live",)

[//]: # ("https://dockerhub.icu",)

[//]: # ("https://docker.m.daocloud.io",)

[//]: # ("https://docker.nju.edu.cn",)

[//]: # ("https://registry.docker-cn.com",)

[//]: # ("https://docker.mirrors.ustc.edu.cn",)

[//]: # ("https://hub-mirror.c.163.com",)

[//]: # ("https://mirror.baidubce.com",)

[//]: # ("https://5tqw56kt.mirror.aliyuncs.com",)

[//]: # ("https://docker.hpcloud.cloud",)

[//]: # ("http://mirrors.ustc.edu.cn",)

[//]: # ("https://docker.chenby.cn",)

[//]: # ("https://docker.ckyl.me",)

[//]: # ("http://mirror.azure.cn",)

[//]: # ("https://hub.rat.dev")

[//]: # (```)

[//]: # ()
[//]: # (![image-20250605110829330]&#40;./Dify课件.assets/image-20250605110829330.png&#41;)

[//]: # ()
[//]: # (保存)

[//]: # ()
[//]: # (在终端重新启动一下docker)

[//]: # ()
[//]: # (```bash)

[//]: # (systemctl daemon-reload)

[//]: # ()
[//]: # (systemctl restart docker)

[//]: # (```)

[//]: # ()
[//]: # (重新执行)

[//]: # ()
[//]: # (```bash)

[//]: # (docker compose up -d)

[//]: # (```)

[//]: # ()
[//]: # (开始正常下载了)

[//]: # ()
[//]: # (![image-20250605111023405]&#40;./Dify课件.assets/image-20250605111023405.png&#41;)

[//]: # ()
[//]: # (报错如下)

[//]: # ()
[//]: # (![image-20250605111647894]&#40;./Dify课件.assets/image-20250605111647894.png&#41;)

[//]: # ()
[//]: # (于是根据报错信息检查)

[//]: # ()
[//]: # (```bash)

[//]: # (   sudo vi /etc/apparmor.d/tunables/home.d/ubuntu)

[//]: # (```)

[//]: # ()
[//]: # (删除掉报错信息中第七行的多余字符即可)

[//]: # ()
[//]: # (![image-4f93a9cc-8b68-4b18-b9c2-bdab0b7c7902]&#40;./Dify课件.assets/image-4f93a9cc-8b68-4b18-b9c2-bdab0b7c7902-1749093640045-3.png&#41;)

[//]: # ()
[//]: # (重新运行，成功)

[//]: # ()
[//]: # (![image-20250605112103687]&#40;./Dify课件.assets/image-20250605112103687.png&#41;)

[//]: # ()
[//]: # (然后进行访问。根据自己的服务器进行地址的选择。比如说这里我的就是http://140.210.92.250:15452/)

[//]: # ()
[//]: # (![image-20250605112311282]&#40;./Dify课件.assets/image-20250605112311282.png&#41;)

[//]: # ()
[//]: # (如图所示为成功访问，进行注册登陆即可)

[//]: # ()
[//]: # (![image-20250605112412009]&#40;./Dify课件.assets/image-20250605112412009.png&#41;)

[//]: # ()
[//]: # (![image-20250605112453658]&#40;./Dify课件.assets/image-20250605112453658.png&#41;)

[//]: # ()
[//]: # (![image-20250605135355035]&#40;./Dify课件.assets/image-20250605135355035.png&#41;)

[//]: # ()
[//]: # (**注意：如果一直无法加载进去，则需要重启docker再次尝试**)

[//]: # ()
[//]: # (在这里我们可以使用提供的在线大模型运营商，但是为了考虑到可能存在的数据安全问题，所以我们自己部署Ollama和Xinference)

[//]: # ()
[//]: # (![image-20250605135524234]&#40;./Dify课件.assets/image-20250605135524234.png&#41;)

[//]: # ()
[//]: # (![image-20250605135548119]&#40;./Dify课件.assets/image-20250605135548119.png&#41;)

[//]: # ()
[//]: # (### 3、模型管理平台Ollama部署)

[//]: # ()
[//]: # (> 没有ollama之前，部署一个私有的大模型比较复杂。需要在主机上安装很多依赖的软件。但现在我们只需要安装Ollama，大模型相关的依赖，Ollama都提供好了。)

[//]: # ()
[//]: # (#### 3.1 Ollama介绍)

[//]: # ()
[//]: # (​	当涉及到⼤规模语⾔模型（LLMs）的管理、部署和使⽤时，使⽤像 Ollama 、 XInference 和 LocalAI 这些模型管理⼯具可以显著提升模型的可管理性，提⾼⼯作效率。)

[//]: # ()
[//]: # (**Ollama**)

[//]: # ()
[//]: # (​	Ollama 是⽤于私有化部署和运⾏⼤型语⾔模型的⼯具，⽀持通义千问、Llama、等多种开源模型，私有化部署使⽤户没有⽹络连接的情况下也能使⽤这些先进的⼈⼯智能模型。Ollama 还提供了丰富的模型库⽅便⽤户从中下载和运⾏各种模型；使⽤ Ollama 开发者只需使⽤简单的命令即可实现与模型的交互。)

[//]: # ()
[//]: # (#### 3.2 Ollama部署)

[//]: # ()
[//]: # (来到如下目录)

[//]: # ()
[//]: # (```bash)

[//]: # (cd /data/dify/)

[//]: # (```)

[//]: # ()
[//]: # (执行命令)

[//]: # ()
[//]: # (```bash)

[//]: # (curl -fsSL https://ollama.com/install.sh | sh)

[//]: # (```)

[//]: # ()
[//]: # (![image-20250605140802774]&#40;./Dify课件.assets/image-20250605140802774.png&#41;)

[//]: # ()
[//]: # (之后为了可以使用本地的Dify接入Ollama，需要修改Ollama的端口号为8891)

[//]: # ()
[//]: # (```bash)

[//]: # (vi /etc/systemd/system/ollama.service)

[//]: # (#往里面添加)

[//]: # (Environment="OLLAMA_HOST=0.0.0.0:8891")

[//]: # (```)

[//]: # ()
[//]: # (![image-20250605140939853]&#40;./Dify课件.assets/image-20250605140939853.png&#41;)

[//]: # ()
[//]: # (```bash)

[//]: # (## 重新启动)

[//]: # (sudo systemctl daemon-reload)

[//]: # (sudo systemctl restart ollama)

[//]: # (# 查看状态)

[//]: # (sudo systemctl status ollama)

[//]: # (```)

[//]: # ()
[//]: # (![image-20250605141035034]&#40;./Dify课件.assets/image-20250605141035034.png&#41;)

[//]: # ()
[//]: # (#### 3.3 Ollama中接入模型)

[//]: # ()
[//]: # (**接入Qwen2.5开源模型**)

[//]: # ()
[//]: # (地址：[qwen2.5]&#40;https://ollama.com/library/qwen2.5&#41;)

[//]: # ()
[//]: # (![image-20250605141323805]&#40;./Dify课件.assets/image-20250605141323805.png&#41;)

[//]: # ()
[//]: # (![image-20250605141403557]&#40;./Dify课件.assets/image-20250605141403557.png&#41;)

[//]: # ()
[//]: # (```bash)

[//]: # (## 执行命令 （这里最好把网址和端口号也带上）)

[//]: # (OLLAMA_HOST=127.0.0.1:8891 ollama run qwen2.5:7b)

[//]: # (```)

[//]: # ()
[//]: # (安装成功)

[//]: # ()
[//]: # (![image-20250605141800889]&#40;./Dify课件.assets/image-20250605141800889.png&#41;)

[//]: # ()
[//]: # (查看目前Ollama管理了哪些模型)

[//]: # ()
[//]: # (![image-20250605141835610]&#40;./Dify课件.assets/image-20250605141835610.png&#41;)

[//]: # ()
[//]: # (**接入DeepSeek R1模型**)

[//]: # ()
[//]: # (使用同样的方式，接入deepseek-r1 7b模型)

[//]: # ()
[//]: # (```bash)

[//]: # (OLLAMA_HOST=127.0.0.1:8891 ollama run deepseek-r1:7b)

[//]: # (```)

[//]: # ()
[//]: # (安装成功)

[//]: # ()
[//]: # (![image-20250605142813908]&#40;./Dify课件.assets/image-20250605142813908.png&#41;)

[//]: # ()
[//]: # (#### 3.4 Dify中接入Ollama中的大语言模型)

[//]: # ()
[//]: # (接入Ollama模型)

[//]: # ()
[//]: # (1、查看ollama已经接入的模型)

[//]: # ()
[//]: # (![image-20250605143049458]&#40;./Dify课件.assets/image-20250605143049458.png&#41;)

[//]: # ()
[//]: # (2、测试模型能否正常使用)

[//]: # ()
[//]: # (```bash)

[//]: # ( OLLAMA_HOST=127.0.0.1:8891 ollama run qwen2.5:7b)

[//]: # (```)

[//]: # ()
[//]: # (3、接入Dify)

[//]: # ()
[//]: # (![image-20250605143150148]&#40;./Dify课件.assets/image-20250605143150148.png&#41;)

[//]: # ()
[//]: # (![image-20250605143232302]&#40;./Dify课件.assets/image-20250605143232302.png&#41;)

[//]: # ()
[//]: # (![image-20250605143436418]&#40;./Dify课件.assets/image-20250605143436418.png&#41;)

[//]: # ()
[//]: # (![image-20250605143509945]&#40;./Dify课件.assets/image-20250605143509945.png&#41;)

[//]: # ()
[//]: # (如图添加完毕)

[//]: # ()
[//]: # (![image-20250605143558833]&#40;./Dify课件.assets/image-20250605143558833.png&#41;)

[//]: # ()
[//]: # (### 4、模型管理平台执Xinference部署)

[//]: # ()
[//]: # (#### 4.1 Xinference介绍)

[//]: # ()
[//]: # (xinference 是⼀个强⼤且通⽤的分布式推理框架，也可以⽤于私有化部署和运⾏⼤语⾔模型，通过 xinference 可以简化各种AI模型的运⾏和集成，使开发者可以使⽤任何开源⼤语⾔模型、推理模型、多模态模型在云端或本地环境中运⾏、推理，创建强⼤的AI应⽤。)

[//]: # ()
[//]: # (#### 4.2 Xinference的部署)

[//]: # ()
[//]: # (##### 4.2.1使用镜像直接配置)

[//]: # ()
[//]: # (​	如果只是想简单使用的话，可以直接参考文档中心中关于Xinference跨平台部署的参考资料，使用该镜像创建云主机之后直接启动服务（如果选择这种方法，就可以释放掉当时创建的Xinference服务器了）)

[//]: # ()
[//]: # (![image-20250606141248173]&#40;./Dify课件.assets/image-20250606141248173.png&#41;)

[//]: # ()
[//]: # (```bash)

[//]: # (#首先开启学术加速)

[//]: # (export http_proxy=http://10.132.19.35:7890)

[//]: # (export https_proxy=http://10.132.19.35:7890)

[//]: # (#安装所需库)

[//]: # (pip install sentence-transformers)

[//]: # ()
[//]: # (conda activate py311)

[//]: # (XINFERENCE_MODEL_SRC=modelscope XINFERENCE_HOME=/data/xinference xinference-local -H 0.0.0.0 -p 8890)

[//]: # (```)

[//]: # ()
[//]: # (##### 4.2.2 手动配置)

[//]: # ()
[//]: # (​	打开之前创建的服务器，输入指令，开始安装Xinference（最新版本会有一些依赖上的冲突，所以下载这个版本）)

[//]: # ()
[//]: # (```bash)

[//]: # (python -m pip install --upgrade pip)

[//]: # (pip install 'xinference==1.5.0')

[//]: # ()
[//]: # (#安装torch)

[//]: # (pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch)

[//]: # ()
[//]: # (#启动服务)

[//]: # (#前台)

[//]: # (xinference-local --host 0.0.0.0 --port 8890)

[//]: # ()
[//]: # (#后台（再开一个终端进行输入）)

[//]: # (nohup xinference-local --host 0.0.0.0 --port 8890 & > output.log)

[//]: # (```)

[//]: # ()
[//]: # (之后访问 **“IP地址 ” + “：” + “ 8890 对应的端口号”**即可访问![image-20250607165913852]&#40;./Dify课件.assets/image-20250607165913852.png&#41;)

[//]: # ()
[//]: # (![image-20250607165828234]&#40;./Dify课件.assets/image-20250607165828234.png&#41;)

[//]: # ()
[//]: # (#### 4.3 模型下载)

[//]: # ()
[//]: # (之后结合该服务器的公网iP和端口号8890进行访问。选择嵌入模型，下载bge-large-zh-v1.5)

[//]: # ()
[//]: # (![image-20250606141503840]&#40;./Dify课件.assets/image-20250606141503840.png&#41;)

[//]: # ()
[//]: # (按照如下配置进行下载模型)

[//]: # ()
[//]: # (![image-20250606142003724]&#40;./Dify课件.assets/image-20250606142003724.png&#41;)

[//]: # ()
[//]: # (![image-20250606143401379]&#40;./Dify课件.assets/image-20250606143401379.png&#41;)

[//]: # ()
[//]: # (再安装一个这个)

[//]: # ()
[//]: # (![image-20250606143435906]&#40;./Dify课件.assets/image-20250606143435906.png&#41;)

[//]: # ()
[//]: # (模型安装好了之后，通过launch运行，运行好的模型会在Running Model中看到)

[//]: # ()
[//]: # (![image-20250607144551455]&#40;./Dify课件.assets/image-20250607144551455.png&#41;)

[//]: # ()
[//]: # (![image-20250607144523662]&#40;./Dify课件.assets/image-20250607144523662.png&#41;![image-20250607144614721]&#40;./Dify课件.assets/image-20250607144614721.png&#41;)

[//]: # ()
[//]: # (#### 4.4 Dify接入Xinference模型)

[//]: # ()
[//]: # (之后使用Dify去连接Xinference)

[//]: # ()
[//]: # (![image-20250606144534636]&#40;./Dify课件.assets/image-20250606144534636.png&#41;)

[//]: # ()
[//]: # (按照如下方法将Embedding模型和Reranker模型进行添加)

[//]: # ()
[//]: # (![825943b122de3ce16c361d26064896a]&#40;./Dify课件.assets/825943b122de3ce16c361d26064896a.png&#41;)

[//]: # ()
[//]: # (添加好了)

[//]: # ()
[//]: # (![image-20250606145306312]&#40;./Dify课件.assets/image-20250606145306312.png&#41;)

[//]: # ()
[//]: # (### 5、查看显存的使用情况)

[//]: # ()
[//]: # (```bash)

[//]: # (nvidia-smi)

[//]: # (```)

[//]: # ()
[//]: # (![image-20250606145946640]&#40;./Dify课件.assets/image-20250606145946640.png&#41;)

[//]: # ()
[//]: # (```bash)

[//]: # (pip install nvitop)

[//]: # (nvitop)

[//]: # (```)

[//]: # ()
[//]: # (![image-20250606150026792]&#40;./Dify课件.assets/image-20250606150026792.png&#41;)

[//]: # ()
[//]: # (### 6、在线部署模式)

[//]: # ()
[//]: # (​	如果想调用线上的LLM，则可以用Dify选择线上的模型运营商。比如说可以在模型运营商中选择Deepseek)

[//]: # ()
[//]: # (![image-20250606150306743]&#40;./Dify课件.assets/image-20250606150306743.png&#41;)

[//]: # ()
[//]: # (DeepSeek官网地址：https://www.deepseek.com/，在官网获取自己的API即可配置后使用)

[//]: # ()
[//]: # (![image-20250606150355759]&#40;./Dify课件.assets/image-20250606150355759.png&#41;)

[//]: # ()
[//]: # (## 第二章 Dify构建企业级应用)

[//]: # ()
[//]: # (### 1、对话应用)

[//]: # ()
[//]: # (这里会通过Dify构建一个简单的对话机器人)

[//]: # ()
[//]: # (![image-20250606151831882]&#40;./Dify课件.assets/image-20250606151831882.png&#41;)

[//]: # ()
[//]: # (![image-20250606151926881]&#40;./Dify课件.assets/image-20250606151926881.png&#41;)

[//]: # ()
[//]: # (编写提示词。这里设计一个有特色的，便于显著看出实现效果。)

[//]: # ()
[//]: # (![image-20250606152706374]&#40;./Dify课件.assets/image-20250606152706374.png&#41;)

[//]: # ()
[//]: # (点击**预览**，开始测试)

[//]: # ()
[//]: # (![image-20250606152953091]&#40;./Dify课件.assets/image-20250606152953091.png&#41;)

[//]: # ()
[//]: # (测试成功后发布更新)

[//]: # ()
[//]: # (![image-20250606153021859]&#40;./Dify课件.assets/image-20250606153021859.png&#41;)

[//]: # ()
[//]: # (### 2、智能体构建：北京旅行助手)

[//]: # ()
[//]: # (**概述**)

[//]: # ()
[//]: # (智能助⼿（Agent Assistant），利⽤⼤语⾔模型的推理能⼒，能够⾃主对复杂的⼈类任务进⾏⽬标规划、任务拆解、⼯具调⽤、过程迭代，并在没有⼈类⼲预的情况下完成任务。)

[//]: # ()
[//]: # (**准备⼯作**)

[//]: # ()
[//]: # (本例中 Dify 将会调⽤外部 duckduck_go API，需确保 dify 所在服务器可以⽆障碍访问国际互联⽹)

[//]: # ()
[//]: # (**应⽤搭建**)

[//]: # ()
[//]: # (在本节我们将实现⼀个旅游规划助理的 agent 应⽤，它可以根据⽤户输⼊的旅⾏⽬的地、旅⾏天数、预算等信息输出结构化的旅⾏计划。)

[//]: # ()
[//]: # ()
[//]: # ()
[//]: # (创建一个空白的Agent应用)

[//]: # ()
[//]: # (![image-20250606153539748]&#40;./Dify课件.assets/image-20250606153539748.png&#41;)

[//]: # ()
[//]: # (添加提示词)

[//]: # ()
[//]: # (```bash)

[//]: # (## ⻆⾊：旅⾏顾问)

[//]: # (### 技能：)

[//]: # (- 精通使⽤⼯具提供有关当地条件、住宿等的全⾯信息。)

[//]: # (- 能够使⽤表情符号使对话更加引⼈⼊胜。)

[//]: # (- 精通使⽤Markdown语法⽣成结构化⽂本。)

[//]: # (- 精通使⽤Markdown语法显示图⽚，丰富对话内容。)

[//]: # (- 在介绍酒店或餐厅的特⾊、价格和评分⽅⾯有经验。)

[//]: # (### ⽬标：)

[//]: # (- 为⽤户提供丰富⽽愉快的旅⾏体验。)

[//]: # (- 向⽤户提供全⾯和详细的旅⾏信息。)

[//]: # (- 使⽤表情符号为对话增添乐趣元素。)

[//]: # (### 限制：)

[//]: # (1. 只与⽤户进⾏与旅⾏相关的讨论。拒绝任何其他话题。)

[//]: # (2. 避免回答⽤户关于⼯具和⼯作规则的问题。)

[//]: # (3. 仅使⽤模板回应。)

[//]: # (### ⼯作流程：)

[//]: # (1. 理解并分析⽤户的旅⾏相关查询。)

[//]: # (2. 使⽤ddgo_search⼯具收集有关⽤户旅⾏⽬的地的相关信息。确保将⽬的地翻译成英)

[//]: # (语。)

[//]: # (3. 使⽤Markdown语法创建全⾯的回应。回应应包括有关位置、住宿和其他相关因素的必)

[//]: # (要细节。使⽤表情符号使对话更加引⼈⼊胜。)

[//]: # (4. 在介绍酒店或餐厅时，突出其特⾊、价格和评分。)

[//]: # (5. 向⽤户提供最终全⾯且引⼈⼊胜的旅⾏信息，使⽤以下模板，为每天提供详细的旅⾏计)

[//]: # (划。)

[//]: # (### 示例：)

[//]: # (### 详细旅⾏计划)

[//]: # (**酒店推荐**)

[//]: # (1. **北京国贸大酒店** &#40;更多信息请访问 www.shangri-la.com/beijing/chinaworldsummitwing&#41;)

[//]: # (- 评分：4.7)

[//]: # (- 价格：大约每晚 ¥1800+)

[//]: # (- 简介：坐落于北京中央商务区（CBD）的标志性建筑国贸大厦上层，提供豪华住宿和俯瞰城市全景的壮丽视野。靠近国贸地铁站，交通便利。)

[//]: # (2. **北京前门建国饭店** &#40;更多信息请访问 www.jianguohotels.com/jianguohotelbeijing&#41;)

[//]: # (- 评分：4.4)

[//]: # (- 价格：大约每晚 ¥600+)

[//]: # (- 简介：位于市中心，临近天安门广场和前门大街，步行即可到达多处历史文化景点。酒店环境舒适，闹中取静，具有老北京韵味。)

[//]: # ()
[//]: # (**第1天 - 抵达与安顿**)

[//]: # (- **上午**：抵达北京。欢迎来到古都北京的冒险之旅！我们的代表将在机场迎接您，确保您顺利转移到住宿地点。)

[//]: # (- **下午**：办理⼊住酒店，并花些时间放松和休息。)

[//]: # (- **晚上**：进行一次轻松的步行之旅，熟悉住宿周边地区。如果酒店在前门或南锣鼓巷附近，可以逛逛胡同街区；如果在市中心，可以探索王府井大街，品尝地道小吃。)

[//]: # ()
[//]: # (**第2天 - 历史与文化之⽇**)

[//]: # (- **上午**：前往天安门广场，感受宏伟的建筑和历史氛围。之后进入故宫博物院（紫禁城），深入了解中国古代皇家宫殿的壮丽与历史。)

[//]: # (- **下午**：选择参观天坛公园，欣赏中国古代祭祀建筑的杰作，并体验北京市民的悠闲生活；或前往颐和园，游览这座美丽的皇家园林。)

[//]: # (- **晚上**：品尝享誉世界的北京烤鸭作为晚餐。之后，可以去三里屯体验北京的现代夜生活，或者回到酒店附近继续探索。)

[//]: # ()
[//]: # (**额外服务：**)

[//]: # (- **礼宾服务**：在您的整个住宿期间，我们的礼宾服务可协助您预订餐厅、购买⻔票、)

[//]: # (安排交通和满⾜任何特别要求，以增强您的体验。)

[//]: # (- **全天候⽀持**：我们提供全天候⽀持，以解决您在旅⾏期间可能遇到的任何问题或需)

[//]: # (求。)

[//]: # (祝您的旅程充满丰富的体验和美好的回忆！)

[//]: # (### 信息)

[//]: # (⽤户计划前往{{destination}}旅⾏{{num_day}}天，预算为{{budget}}。)

[//]: # (```)

[//]: # ()
[//]: # (![image-20250606153640513]&#40;./Dify课件.assets/image-20250606153640513.png&#41;)

[//]: # ()
[//]: # (之后可以在**功能**中添加**对话开场白**和**内容审查**等功能)

[//]: # ()
[//]: # (![image-20250606153855364]&#40;./Dify课件.assets/image-20250606153855364.png&#41;)

[//]: # ()
[//]: # (```)

[//]: # ({{name}}先生、女士,我是您的个性化旅行助理,你是否已经准备好开始一段充满冒险和放松的旅程了?让我们一起打造您难忘的旅行体验吧!请告诉我您的旅行目的、预算和行程天数,比如:)

[//]: # (提供所有必要的细节和提示,所有这些都包裹在一个有趣而引人入胜的包装中!)

[//]: # ()
[//]: # (您能帮我计划一次家庭旅行吗?我们计划去北京10天,预算一万人民币)

[//]: # (您能帮我计划一次情侣蜜月旅行吗?我们计划去北京5天,预算七千人民币)

[//]: # (```)

[//]: # ()
[//]: # (![image-20250606154114471]&#40;./Dify课件.assets/image-20250606154114471.png&#41;)

[//]: # ()
[//]: # (内容审查设置)

[//]: # ()
[//]: # (![image-20250606154527229]&#40;./Dify课件.assets/image-20250606154527229.png&#41;)

[//]: # ()
[//]: # (提问被拦截)

[//]: # ()
[//]: # (![image-20250606154603138]&#40;./Dify课件.assets/image-20250606154603138.png&#41;)

[//]: # ()
[//]: # (现在进行完整测试)

[//]: # ()
[//]: # (![image-20250606155120622]&#40;./Dify课件.assets/image-20250606155120622.png&#41;)

[//]: # ()
[//]: # (![image-20250606155146714]&#40;./Dify课件.assets/image-20250606155146714.png&#41;)

[//]: # ()
[//]: # (### 3、工作流构建：钉钉智能助手)

[//]: # ()
[//]: # (​	我们可以通过DIfy的工作流结合多种工具与节点。它们会进行协作进而实现工作流的功能。)

[//]: # ()
[//]: # (![image-20250606163303624]&#40;./Dify课件.assets/image-20250606163303624.png&#41;)

[//]: # ()
[//]: # (![image-20250606163320248]&#40;./Dify课件.assets/image-20250606163320248.png&#41;)

[//]: # ()
[//]: # (我们这里构建一个使用了钉钉群机器人的消息反馈工作流。将用户的文字问题进行分类和拆解分析后通过钉钉群机器人发送到群中。)

[//]: # ()
[//]: # (如下是其工作流的配置。)

[//]: # ()
[//]: # (![image-20250607104614123]&#40;./Dify课件.assets/image-20250607104614123.png&#41;)

[//]: # ()
[//]: # (#### 3.1 开始)

[//]: # ()
[//]: # (工作流从此处开始。我们在输入字段中添加自己指定的输入内容)

[//]: # ()
[//]: # (![image-20250607104625656]&#40;./Dify课件.assets/image-20250607104625656.png&#41;)

[//]: # ()
[//]: # (#### 3.2 问题分类器)

[//]: # ()
[//]: # (这里调用了两级问题分类器。问题分类器会调用LLM，从问题列表中选择最与用户的提问符合的一条，然后进入该条)

[//]: # ()
[//]: # (![image-20250607104716419]&#40;./Dify课件.assets/image-20250607104716419.png&#41;)

[//]: # ()
[//]: # ()
[//]: # ()
[//]: # (#### 3.3 总结助手)

[//]: # ()
[//]: # (是问题分类器的下游，在系统提示词中传递进两级分类的名称，以及初始问题，要求进行总结)

[//]: # ()
[//]: # (![image-20250607105430842]&#40;./Dify课件.assets/image-20250607105430842.png&#41;)

[//]: # ()
[//]: # (#### 3.4 钉钉群消息工具)

[//]: # ()
[//]: # (首先我们要使用PC端的钉钉进行群机器人的创建。首先你需要在一个你是管理员的组织内创建一个群，然后才能在这个群里创建机器人)

[//]: # ()
[//]: # (![image-20250607111605887]&#40;./Dify课件.assets/image-20250607111605887.png&#41;)

[//]: # ()
[//]: # (![image-20250607111624296]&#40;./Dify课件.assets/image-20250607111624296.png&#41;![image-20250607111642938]&#40;./Dify课件.assets/image-20250607111642938.png&#41;、】)

[//]: # ()
[//]: # (![image-20250607111656179]&#40;./Dify课件.assets/image-20250607111656179.png&#41;)

[//]: # ()
[//]: # (保存这个加签秘钥，之后会用到)

[//]: # ()
[//]: # (![image-20250607111845741]&#40;./Dify课件.assets/image-20250607111845741.png&#41;)

[//]: # ()
[//]: # (保存下来这个Webhook，后面也会用到)

[//]: # ()
[//]: # (![image-20250607111941316]&#40;./Dify课件.assets/image-20250607111941316.png&#41;)

[//]: # ()
[//]: # (完成了创建。)

[//]: # ()
[//]: # (之后再钉钉机器人工具中的ACCESS TOKEN中填入刚才复制的Webhook中的access_token的值，在加签秘钥中填入刚才保存的加签秘钥)

[//]: # ()
[//]: # (![image-20250607110848749]&#40;./Dify课件.assets/image-20250607110848749.png&#41;)

[//]: # ()
[//]: # (#### 3.5 测试)

[//]: # ()
[//]: # (点击运行，输入初始反馈信息，开始运行)

[//]: # ()
[//]: # (![image-20250607112337322]&#40;./Dify课件.assets/image-20250607112337322.png&#41;)

[//]: # ()
[//]: # (运行成功)

[//]: # ()
[//]: # (![image-20250607112419082]&#40;./Dify课件.assets/image-20250607112419082.png&#41;)

[//]: # ()
[//]: # (![image-20250607112430981]&#40;./Dify课件.assets/image-20250607112430981.png&#41;)

[//]: # ()
[//]: # (### 4、知识库应用构建)

[//]: # ()
[//]: # (​	通过使用Dify，可以方便快捷地构建私有知识库。可以将知识库放在工作流中，协同多种工具一切使用。而且DIfy提供的知识库功能有着简洁的可视化界面，可以很方便地进行管理，适用于个人和团队。)

[//]: # ()
[//]: # (⽬前 Dify ⽀持多种源数据格式，包括：)

[//]: # ()
[//]: # (⻓⽂本内容：TXT、Markdown、DOCX、HTML、JSON、 PDF)

[//]: # ()
[//]: # (结构化数据：CSV、Excel)

[//]: # ()
[//]: # (**注：私有知识库要达到良好的效果，必须与embedding模型和reranker模型相结合，请在xinterface中启⽤相关模型并引⼊Dify**)

[//]: # ()
[//]: # (#### 4.1 构建私有知识库)

[//]: # ()
[//]: # (首先创建一个新的知识库)

[//]: # ()
[//]: # (![image-20250607143032172]&#40;./Dify课件.assets/image-20250607143032172.png&#41;)

[//]: # ()
[//]: # (随后上传知识库文件。这里准备的是一部刑法的txt格式文本，用自然段的形式划分了每一条法则)

[//]: # ()
[//]: # (![image-20250607143135427]&#40;./Dify课件.assets/image-20250607143135427.png&#41;)

[//]: # ()
[//]: # (这里可以设置分段设置。分段标识符如果是**\n**则是以换行为一个分段；如果是**\n\n**则是以一个段落为一个分段。点击**预览块**查看目前块划分的情况。)

[//]: # ()
[//]: # (![image-20250607143327109]&#40;./Dify课件.assets/image-20250607143327109.png&#41;)

[//]: # ()
[//]: # (选择索引方式，这里自动选择高质量。高质量的准确性更高，但是token消耗也会增加。我们这里使用的是部署到本地的模型，于是没有影响。)

[//]: # ()
[//]: # (![image-20250607143620519]&#40;./Dify课件.assets/image-20250607143620519.png&#41;)

[//]: # ()
[//]: # (检索设置。在这里可以选择Embedding模型和Rerank模型，也可以设置Top K，也就是选出最相似的前n条选择Score阈值，即筛选文本的相似度阈值。)

[//]: # ()
[//]: # (![image-20250607143738486]&#40;./Dify课件.assets/image-20250607143738486.png&#41;)

[//]: # ()
[//]: # (设置完成后，保存并处理即可。)

[//]: # ()
[//]: # (![image-20250607144635958]&#40;./Dify课件.assets/image-20250607144635958.png&#41;)

[//]: # ()
[//]: # (接下来我们进行测试使用。创建一个聊天助手，将提示词写为)

[//]: # ()
[//]: # (```)

[//]: # (你是一个法律小助手，请根据知识库中的信息告诉用户，用户提问的案件触犯了哪些法律)

[//]: # (```)

[//]: # ()
[//]: # (知识库选择刚才添加的刑法.txt，然后可以开始提问。)

[//]: # ()
[//]: # (可以观察到，聊天助手会自动引用知识库中的内容进行回答。)

[//]: # ()
[//]: # (![image-20250607145430818]&#40;./Dify课件.assets/image-20250607145430818.png&#41;)
